オプティマイザは複数のタイプのスキャン方法から選択できます。最も一般的なスキャン方法は次のとおりです。
TimesTenでは、ハッシュ索引とROWID参照を介して高性能な完全一致処理を実行し、インメモリーの最適化されたTツリー索引を介して範囲一致処理を実行します。
全表スキャンでは、1つの表を完全にスキャンします。全体スキャンを実行すると、カーソルが表上で開かれ、カーソルを進めて各行を調べ、行の終わりでカーソルが閉じられます。ハッシュ・スキャンまたはレンジ・スキャンを適用できない場合にかぎり、全体スキャンが考慮されます。ttOptSetFlagフラグscanがfalseの場合、他のタイプのスキャンが全体スキャンに優先します。
TimesTenでは、表に保存される各行にROWIDという名前の一意IDを割り当てます。たとえば、アプリケーションで以前にROWIDを選択し、次に「WHERE ROWID =」句を使用して同じ行をフェッチする場合に、ROWID参照が適用可能です。ROWID参照は他のどのタイプの索引スキャンよりも高速です。ttOptSetFlagフラグRowidがfalseの場合、ROWID参照は適用できないものとみなされます。
ハッシュ索引スキャンでは、ハッシュ索引を使用して表にアクセスします。このようなスキャンは、条件に完全一致するキーが含まれるハッシュ索引が表に存在する場合に適用できます。「スキャン」という用語は、オプティマイザが複数の行を参照することを意味するので、ROWID参照のように最大1行を返すハッシュ索引スキャンは、「スキャン」というより実際には「参照」です。ttOptSetFlagフラグhashがfalseの場合、ハッシュ・スキャンは適用できないものとみなされます。
Tツリー索引スキャンでは、Tツリー索引を使用して表にアクセスします。このようなスキャンは、表に1つ以上のTツリー索引が存在するかぎり適用できます。オプティマイザは、可能なかぎり長いキー列の接頭辞を一致させるよう試みます。特定のキー列で一致しない場合、索引スキャンはその列の値をすべて返します。各キー列に対して、条件に単一の値を指定する(T1.A = 2など)場合に、Tツリー索引が一意であれば、オプティマイザはスキャンによってではなく、参照によって行を検索します。ttOptSetFlagフラグTtreeがfalseの場合、Tツリー・スキャンは適用できないものとみなされます。